﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Model;
using System.Collections;

namespace Controller
{
    public class cntrAdvogadoPrestador
    {

        public cntrAdvogadoPrestador()
        {  
        }

        AdvogadoPrestador objAdvogadoPrestador;


        #region Salvar

        public Boolean Save(DS_Lawyer.AdvogadoPrestadorRow pAdvogadoPrestador)
        {
            Boolean flagReturn = false;
            if (pAdvogadoPrestador.idPrestador == string.Empty)
            {
                this.objAdvogadoPrestador = new AdvogadoPrestador();
                this.objAdvogadoPrestador.IdPrestador = System.Guid.NewGuid().ToString();
                this.objAdvogadoPrestador.Nome = pAdvogadoPrestador.nome;
                this.objAdvogadoPrestador.Cpf = pAdvogadoPrestador.cpf;
                this.objAdvogadoPrestador.Rg = pAdvogadoPrestador.rg;
                this.objAdvogadoPrestador.Oab = pAdvogadoPrestador.oab;
                this.objAdvogadoPrestador.Email = pAdvogadoPrestador.email;
                this.objAdvogadoPrestador.Endereco = Endereco.RetriveObject(pAdvogadoPrestador.idEndereco);
                this.objAdvogadoPrestador.Usuario = Usuario.RetriveObject(pAdvogadoPrestador.idUsuario);
                this.objAdvogadoPrestador.DataCadastro = pAdvogadoPrestador.dataCadastro;

                try
                {
                    flagReturn = this.objAdvogadoPrestador.Persist();
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
            else
            {
                this.objAdvogadoPrestador = AdvogadoPrestador.RetriveObject(pAdvogadoPrestador.idPrestador);
                this.objAdvogadoPrestador.Nome = pAdvogadoPrestador.nome;
                this.objAdvogadoPrestador.Cpf = pAdvogadoPrestador.cpf;
                this.objAdvogadoPrestador.Rg = pAdvogadoPrestador.rg;
                this.objAdvogadoPrestador.Oab = pAdvogadoPrestador.oab;
                this.objAdvogadoPrestador.Email = pAdvogadoPrestador.email;
                this.objAdvogadoPrestador.Endereco = Endereco.RetriveObject(pAdvogadoPrestador.idEndereco);
                this.objAdvogadoPrestador.Usuario = Usuario.RetriveObject(pAdvogadoPrestador.idUsuario);
                this.objAdvogadoPrestador.DataCadastro = pAdvogadoPrestador.dataCadastro;
                try
                {
                    flagReturn = this.objAdvogadoPrestador.Update();
                }
                catch (Exception ex)
                {

                    throw ex;
                }
            }
            return flagReturn;
        }
        #endregion

        #region Delete
        public static Boolean Delete(String pID)
        {
            Boolean flagReturn = false;
            try
            {
                flagReturn = AdvogadoPrestador.Delete(pID);
            }
            catch (Exception e)
            {
                throw e;
            }
            return flagReturn;
        }


        #endregion

        #region Select

        #region SelecByID
        public DS_Lawyer.AdvogadoPrestadorRow Select(string pID)
        {
            DS_Lawyer.AdvogadoPrestadorDataTable dtAdvogadoPrestador = new DS_Lawyer.AdvogadoPrestadorDataTable();
            DS_Lawyer.AdvogadoPrestadorRow rowAdvogadoPrestador = dtAdvogadoPrestador.NewAdvogadoPrestadorRow();

            try
            {
                this.objAdvogadoPrestador = AdvogadoPrestador.RetriveObject(pID);
                rowAdvogadoPrestador.idPrestador = pID;
                rowAdvogadoPrestador.idEndereco = this.objAdvogadoPrestador.Endereco.IdEndereco;
                rowAdvogadoPrestador.idUsuario = this.objAdvogadoPrestador.Usuario.IdUsuario;
                rowAdvogadoPrestador.nome = this.objAdvogadoPrestador.Nome;
                rowAdvogadoPrestador.rg = this.objAdvogadoPrestador.Rg;
                rowAdvogadoPrestador.cpf = this.objAdvogadoPrestador.Cpf;
                rowAdvogadoPrestador.dataCadastro = this.objAdvogadoPrestador.DataCadastro;
                rowAdvogadoPrestador.email = this.objAdvogadoPrestador.Email;
                rowAdvogadoPrestador.oab = this.objAdvogadoPrestador.Oab;
            }
            catch (Exception ex)
            {

                throw ex;
            }

            return rowAdvogadoPrestador;
        }
        #endregion

        #region SelectAll()
        public static DS_Lawyer.AdvogadoPrestadorDataTable Select()
        {
            DS_Lawyer.AdvogadoPrestadorDataTable dtAdvogadoPrestador = new DS_Lawyer.AdvogadoPrestadorDataTable();
            try
            {
                IList lisAdvogados = AdvogadoPrestador.RetriveObjects();
                for (int i = 0; i < lisAdvogados.Count; i++)
                {
                    AdvogadoPrestador objAdvogadoPrestador = (AdvogadoPrestador)lisAdvogados[i];
                    dtAdvogadoPrestador.AddAdvogadoPrestadorRow(objAdvogadoPrestador.IdPrestador,
                        objAdvogadoPrestador.Nome, objAdvogadoPrestador.Rg, objAdvogadoPrestador.Cpf, 
                        objAdvogadoPrestador.Oab,objAdvogadoPrestador.Usuario.IdUsuario, 
                        objAdvogadoPrestador.Endereco.IdEndereco, objAdvogadoPrestador.Email, 
                        objAdvogadoPrestador.DataCadastro);
                }
            }
            catch (Exception ex)
            {
                //Tratar mensagem de erro aqui!
                throw ex;

            }
            return dtAdvogadoPrestador;
        }
        #endregion

        #region SelectByName
        public static DS_Lawyer.AdvogadoPrestadorDataTable SelectByName(string pNome)
        {
            DS_Lawyer.AdvogadoPrestadorDataTable dtAdvogadoPrestador = new DS_Lawyer.AdvogadoPrestadorDataTable();
            try
            {
                IList lisAdvogados = AdvogadoPrestador.RetriveObjectsByName(pNome);
                for (int i = 0; i < lisAdvogados.Count; i++)
                {
                    AdvogadoPrestador objAdvogadoPrestador = (AdvogadoPrestador)lisAdvogados[i];
                    dtAdvogadoPrestador.AddAdvogadoPrestadorRow(objAdvogadoPrestador.IdPrestador,
                        objAdvogadoPrestador.Nome, objAdvogadoPrestador.Rg, objAdvogadoPrestador.Cpf,
                        objAdvogadoPrestador.Oab, objAdvogadoPrestador.Usuario.IdUsuario,
                        objAdvogadoPrestador.Endereco.IdEndereco, objAdvogadoPrestador.Email,
                        objAdvogadoPrestador.DataCadastro);
                }
            }
            catch (Exception ex)
            {
                //Tratar mensagem de erro aqui!
                throw ex;

            }
            return dtAdvogadoPrestador;
        }
        #endregion

        #endregion

    }
}
